package com.youlv.yl.util;

import java.lang.reflect.Field;

/**
 * @author fenghe
 * @date 2022/1/2 16:10
 */
public class BeanUtils {

    /** 基于反射实现对象的创建*/
    public static <T, E> T copyBean(Class<T> clz, Object obj, Field[] fields) {
        T t = null;
        try {
            // 实例化对象
            t = clz.newInstance();

            // 遍历属性
            for (Field f : fields) {
                // 获取目标对象的属性对象
                Field field = clz.getDeclaredField(f.getName());
                if(field != null) {
                    //设置忽略访问修饰符的校验
                    field.setAccessible(true);
                    f.setAccessible(true);
                    //为属性赋值
                    field.set(t, f.get(obj));
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return t;
    }
}
